﻿using System;
using Microsoft.Synchronization;

namespace Microsoft.WindowsAzure.Accelerator.Synchronization
{
    /// <summary>
    /// Provides a common interface on the different Azure sync providers.
    /// </summary>
    public interface ISyncProvider
    {
        /// <summary>
        /// Gets or sets the cloud storage account.
        /// </summary>
        /// <value>The cloud storage account.</value>
        CloudStorageAccount Account { get; set; }
        
        /// <summary>
        /// Gets or sets the name of the container.
        /// </summary>
        /// <value>The name of the container.</value>
        String ContainerName { get; set; }

        /// <summary>
        /// Gets or sets the local path.
        /// </summary>
        /// <value>The local path.</value>
        String LocalPath { get; set; }

        /// <summary>
        /// Gets or sets the sync direction and order (when bi-directional sync).
        /// </summary>
        /// <value>The sync direction.</value>
        SyncDirectionOrder SyncDirection { get; set; }
        
        /// <summary>
        /// Start the synchronization process.
        /// </summary>
        void StartSync();
    }
}